#include <cstdint>
#include <ios>
#include <iostream>
#include <vector>
using ll = int64_t;

struct BT{
    const ll size;
    std::vector<ll> t;
    static inline ll lb(ll n){
        return n&(-n);
    }
    BT(ll size):size(++size),t(size+1){

    }
    inline void upd(ll idx,ll add){
        while(idx<=size){
            t[idx]+=add;
            idx+=lb(idx);
        }
    }
    inline ll get(ll idx){
        ll res=0;
        while(idx){
            res+=t[idx];
            idx-=lb(idx);
        }
        return res;
    }
};

int main(){
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);

    ll n,m;
    std::cin>>n>>m;
    BT s(n),e(n);
    for(ll i=1;i<=m;i++){
        ll k,l,r;
        std::cin>>k>>l>>r;
        if(k==1){
            s.upd(l, 1);
            e.upd(r, 1);
        }else{
            ll nans=
                s.get(r) - e.get(l-1);
            
            std::cout<<nans<<"\n";
        }
    }
}